package org.example.batch.pojo;

import lombok.Data;

import java.util.Date;

/**
 * 子任务PO
 *
 * @author hero生仔
 * @date 2025/7/26
 */
@Data
public class BatchSubTable {
    /**
     * 子任务ID
     */
    private String subTaskId;

    /**
     * 主任务ID
     */
    private String mainTaskId;

    /**
     * 输入表名称
     */
    private String inputTableName;

    /**
     * 输入表总记录数
     */
    private int inputTableTotalCount;

    /**
     * 最后一个key，用来续传
     */
    private int lastQueryKey;

    /**
     * 已运行记录数
     */
    private int alreadyRunningCount;

    /**
     * 子任务状态
     */
    private String status;

    /**
     * 起始索引
     */
    private int inputTableStart;

    /**
     * 末尾索引
     */
    private int inputTableEnd;

    /**
     * 错误信息
     */
    private String errorMsg;

    /**
     * 更新时间
     */
    private Date updateTime;

    public BatchSubTable() {}

    public BatchSubTable(String subTaskId) {
        this.subTaskId = subTaskId;
    }

    /**
     * 组装子任务的线程的基本信息
     *
     * @param batchSubTable       子任务
     * @param start               起始索引
     * @param end                 末尾索引
     * @param perThreadHandleCount          记录总数
     * @param lastQueryKey        最后一次查询的key，用于续传
     */
    public void addBaseInfo(BatchSubTable batchSubTable, int start, int end, int perThreadHandleCount, int lastQueryKey) {
        // 子任务线程的主任务 即 子任务
        this.setMainTaskId(batchSubTable.getSubTaskId());
        this.setInputTableName(batchSubTable.getInputTableName());
        this.setStatus(batchSubTable.getStatus());
        this.setInputTableStart(start);
        this.setInputTableEnd(end);
        this.setInputTableTotalCount(perThreadHandleCount);
        this.setLastQueryKey(lastQueryKey);
    }
}
